<!-- 
 注：此文件只能用于本地调试，放在hybird目录下
 但想唤起微信支付必须得用网络地址
 -->

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black" />
		<meta name="format-detection" content="telephone=no" />
		<title>支付</title>
		<script type="text/javascript"
			src="https://gitcode.net/dcloud/hello-uni-app-x/-/blob/alpha/hybrid/html/uni.webview.1.5.5.js"></script>
		<script type="text/javascript" src="//static.bidcenter.com.cn/js/wap/zepto.min.js"></script>
		<!-- <script type="text/javascript" src="js/zepto.min.js"></script> -->

		<script type="text/javascript" src="//static.bidcenter.com.cn/js/wap/layer_mobile/layer.js"></script>
		<!-- <script type="text/javascript" src="js/layer.js"></script> -->

		<!-- 只能用bidcenter的域名 -->
		<!-- <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> -->
		<!-- https://res2.wx.qq.com/open/js/jweixin-1.6.0.js -->
		<!-- <script type="text/javascript" src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script> -->

		<script type="text/javascript" src="https://static.bidcenter.com.cn/js/mobile/tg-blue/core.js"></script>
		<!-- <script type="text/javascript" src="js/core.js"></script> -->

		<!-- <script type="text/javascript" src="https://static.bidcenter.com.cn/js/wap/pay/pay.js"></script> -->
		<!-- <script type="text/javascript" src="js/pay.js"></script> -->
	</head>

	<body>
		<div style="text-align: center; padding-top:35%; ">
			<!-- 进入页面根据url中的参数orderid来获取微信支付jsbrige所需的相关参数，然后调Jsbrige进行支付 -->
			<!-- <span>支付中...</span> -->
		</div>
		<!-- 测试返回功能 -->
		<!-- <span onClick="callback()">返回</span> -->

		<script>
			/**
			 * 微信支付：微信app支付完成，返回参数：在微信后端接口返回的url中拼接redirect_url
			 * 支付宝支付：支付宝支付完成，后端有设置返回的参数，目前配的 https://m.bidcenter.com.cn/pay/pay-jsapi.html?orderid="+orderid+
			 * 返回app：支付成功，订单异常，超时等都需要返回到app中
			 */
			function callback() {
				// document.addEventListener('UniAppJSBridgeReady', function() {
				// 	uni.navigateTo({
				// 		url: '/pages/user/huiyuan/payment'
				// 	});
				// })
				// location.href = 'https://m.bidcenter.com.cn/pay/pay-jsapi.html'
				location.href = "bidcenter.com.cn://"
			}
			// https://apps.apple.com/cn/app/%E4%B8%AD%E5%9B%BD%E9%87%87%E6%8B%9B%E7%BD%91%E5%AE%A2%E6%88%B7%E7%AB%AF/id890317566
			// function callback2() {
			// 	// if (this.isIos == 'android') {
			// 	// 	let ifr = document.createElement("iframe");
			// 	// 	ifr.src = "hbuilder://"; // 这里的hbuilder在manifest.json中配置->“App常用其它设置” -> “Android设置” -> “UrlSchemes” 项中进行设置
			// 	// 	ifr.style.display = "none";
			// 	// 	document.body.appendChild(ifr);
			// 	// } else {
			// 	// 	location.href = "https://apps.apple.com/cn/app/idxxxxxxx" //你的苹果应用app链接 
			// 	// }
			// 	location.href = 'https://m.bidcenter.com.cn/pay/pay-jsapi.html'
			// }

			// function callback3() {
			// 	uni.webView.navigateBack();
			// }

			// function callback4() {
			// 	uni.navigateBack();
			// }

			// function callback5() {
			// 	uni.navigateTo({
			// 		url: '/pages/user/huiyuan/payment'
			// 	});
			// }

			// /pages/user/huiyuan/payment 返回app
			// alert('x'+token)
			// alert(location.href)

			function getguid() {
				return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
					/[xy]/g,
					function(c) {
						var r = (Math.random() * 16) | 0,
							v = c == "x" ? r : (r & 0x3) | 0x8;
						return v.toString(16);
					}
				);
			};

			var orderid = getUrlParams("orderid") || 28812811
			var orderNo = getUrlParams("orderNo")
			var token = getUrlParams("token") || token;
			var guid = getUrlParams("guid") || getguid()
			var from = getUrlParams("f") || getUrlParams("from") == 'open' ? 4038 : 4039;
			var loc = getUrlParams("l") || 10743;

			var payState = "";
			var timerId = 0;
			var timerObj = {};

			function isIos() {
				const userAgent = navigator.userAgent.toLowerCase()
				return /iphone|ipad|ipod/.test(userAgent)
			}

			// 获取支付订单相关的微信支付参数
			function getWxPayParams() {
				
				var params = {
					from: from, // 位置来源ID	int	Y	分类表来源
					location: loc, // 位置类别	int	Y	页面位置
					token: token, // 登录信息	string	Y	token
					guid: guid, // 唯一ID	string	Y	唯一ID
					// 支付宝288129 微信288128 getUrlParams("orderid")
					orderid: orderid, // 订单ID	int	Y	-
					paymod: 4, // 支付场景	int	N	0：APP支付（默认） 1：PC端扫码支付 2：JSAPI（微信内H5页面）支付 3：小程序支付 4：H5支付
					// qrcodewidth:'',	// 二维码宽度	int	N	PC端扫码支付时生效
					// code:'',	// 微信code标识	string	N	用于获取用户的微信openid
					// cachename:'',	// 存储订单编号的缓存	string	N	在其他地方其他创建订单时，用这个缓存存储订单编号
				}
				
				console.log('pay-jsapi params', JSON.stringify(params))
				
				$.ajax({
					type: "POST",
					url: "https://interface.bidcenter.com.cn/payStep/GetPaymentDataHandler.ashx",
					data: params,
					success: function(rs) {

						layer.open({
							content: "请确认是否已支付完成",
							// skin: 'msg',
							// time: 2
						});

						var nrs = JSON.parse(rs)
						console.log('rs', JSON.stringify(nrs.other2))
						// nrs.ret = false;
						if (nrs.ret) {
							// ipaybs	支付平台标识	int	N	1：微信；2：支付宝；3：苹果iap；4：企业微信对外付款
							var ipaybs = nrs.other2.ipaybs;
							var orderNo = nrs.other2.orderNo;
							// 微信支付 ipaybs === '微信'
							if (ipaybs === 1) {
								// redirect_url 微信支付成功后的回调
								/**
								 * "://pages/user/huiyuan/payment"
								 */
								//  注：目前redirect_url只能用bidcenter.com.cn://  不能用 caizhao://，原因可能是redirect_url需要从微信后台或者其它地方进行配置
								location.href = nrs.other2.data.mweb_url + "&redirect_url=" + encodeURIComponent(
									"bidcenter.com.cn://");
							} else {
								// 支付宝支付
								var newDiv = document.createElement('div')
								newDiv.innerHTML = nrs.other2.data
								document.body.appendChild(newDiv);

								// 上面插入的代码片段有js代码，不会执行，因为格式是string，故下面再添加一下需要执行的js 
								setTimeout(function() {
									document.forms['alipaysubmit'].submit();
								}, 300)
							}
						} else {
							layer.open({
								content: nrs.msg,
								skin: 'msg',
								time: 2
							});
							stopFn();
							// 需要自动返回app
							// callback();
						}

					},
					error: function(err) {
						console.log(err)
					}
				});
			}

			// 获取支付状态
			function getPayState() {
				$.ajax({
					type: "POST",
					url: "https://interface.bidcenter.com.cn/pay/GetPaySuccessToCecheHandler.ashx",
					data: {
						from: from, // 位置来源ID	int	Y	分类表来源
						location: loc, // 位置类别	int	Y	页面位置
						token: token, // 登录信息	string	Y	token
						guid: guid, // 唯一ID	string	Y	唯一ID

						type: "1", // 支付类别	string	Y	0（默认）：二码合一扫码支付 1：直接支付
						orderNo: orderNo, // 订单编号	string	N	type=1时必填
						cachename: "", // 存储订单编号的缓存名称	string	N	type=0时必填
					},
					success: function(rs) {
						rs = JSON.parse(rs)



						payState = rs.other2.state;
						// state状态为true的时候停止定时器
						// 0未扫码 1已支付 2支付中 3已过期
						if (payState === 1) {
							layer.open({
								content: "支付成功",
								skin: 'msg',
								time: 2
							});
							stopFn();
							// 需要返回app
							callback()

						} else if (this.state === 3) {
							layer.open({
								content: "已过期，请重新支付",
								skin: 'msg',
								time: 2
							});
							stopFn();
							// 需要返回app
							callback()
						} else if (this.state === 2) {
							// 正常是到不了这里的
							layer.open({
								content: "支付中",
								skin: 'msg',
								time: 2
							});
							stopFn();
						}
					},
					error: function(err) {},
				});
			};


			function stopFn() {
				timerObj = {};
			};

			$(function() {
				if (from) {
					getWxPayParams();
				}

				// 轮询支付状态接口
				const start = function() {
					const id = timerId++;
					timerObj[id] = true;
					const timer = () => {
						if (!timerObj[id]) return;
						// 更新支付状态
						getPayState();
						setTimeout(function() {
							timer();
						}, 3000);
					};
					timer();
				};
				start();
			});
		</script>
	</body>

</html>